--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
README.md v4.4.0-rc.2 (8c81399b) Text, 11.66 KB
Reticulum MeshChatX
A extensively modified and feature-rich fork of Reticulum MeshChat by Liam Cottle.
This project is independent from the original Reticulum MeshChat project and is not affiliated with it.
• Website: meshchatx.com
• Source: git.quad4.io/RNS-Things/MeshChatX
• Official Mirror: github.com/Sudo-Ivan/MeshChatX - Also used for Windows and MacOS builds for the moment.
• Releases: git.quad4.io/RNS-Things/MeshChatX/releases
• Changelog: CHANGELOG.md
• TODO: Boards
Important Changes from Reticulum MeshChat
• Uses LXST
• Replaced Peewee ORM with raw SQL.
• Replaced Axios with native fetch.
• Uses latest Electron.
• .whls ships with webserver and built-in frontend assets for more deployment options.
• i18n
• PNPM and Poetry for dependency management.
│ [!WARNING] MeshChatX is not guaranteed to be wire/data compatible with older Reticulum MeshChat
│ releases. Back up data before migration/testing.
│ [!WARNING] Legacy systems are not fully supported yet. Current baseline is Python T383838>=3.11 and Node
│ T383838>=24.
Requirements
• Python T383838>=3.11 (from T383838pyproject.toml)
• Node.js T383838>=24 (from T383838package.json)
• pnpm T38383810.32.1 (from T383838package.json)
• Poetry (used by T383838Taskfile.yml and CI workflows)
T282828
task install
task lint:all
task test:all
task build:all
Install Methods
Use the method that matches your environment and packaging preference.
┌───────────────────────┬──────────────────────────┬─────────────────────────────────────────┬─────┐
│ Method │ Includes frontend assets │ Architectures │ Be… │
├───────────────────────┼──────────────────────────┼─────────────────────────────────────────┼─────┤
│ Docker image │ Yes │ T383838linux/amd64, T383838linux/arm64 │ Fa… │
│ Python wheel (T383838.whl) │ Yes │ Any Python-supported architecture │ He… │
│ Linux AppImage │ Yes │ T383838x64, T383838arm64 │ Po… │
│ Debian package (T383838.deb) │ Yes │ T383838x64, T383838arm64 │ De… │
│ RPM package (T383838.rpm) │ Yes │ CI-runner dependent for published arti… │ Fe… │
│ From source │ Built locally │ Host architecture │ De… │
└───────────────────────┴──────────────────────────┴─────────────────────────────────────────┴─────┘
Notes:
• The release workflow explicitly builds Linux T383838x64 and T383838arm64 AppImage + DEB.
• RPM is also attempted by release workflow and uploaded when produced.
Quick Start: Docker
T282828
docker compose up -d
Default compose file maps:
• T383838127.0.0.1:8000 on host -> container port T3838388000
• T383838./meshchat-config -> T383838/config for persistence
If your local T383838meshchat-config permissions block writes, fix ownership:
T282828
sudo chown -R T79c0ff1000:1000 ./meshchat-config
Install from Release Artifacts
1) Linux AppImage (x64/arm64)
1. Download T383838ReticulumMeshChatX-v<version>-linux-<arch>.AppImage from releases.
2. Make it executable and run:
T282828
chmod +x ./ReticulumMeshChatX-v*-linux-*.AppImage
./ReticulumMeshChatX-v*-linux-*.AppImage
2) Debian/Ubuntu T383838.deb (x64/arm64)
1. Download T383838ReticulumMeshChatX-v<version>-linux-<arch>.deb.
2. Install:
T282828
sudo apt install ./ReticulumMeshChatX-v*-linux-*.deb
3) RPM-based systems
1. Download T383838ReticulumMeshChatX-v<version>-linux-<arch>.rpm if present in the release.
2. Install with your distro tool:
T282828
sudo rpm -Uvh ./ReticulumMeshChatX-v*-linux-*.rpm
4) Python wheel (T383838.whl)
Release wheels include the built web assets.
T282828
pip install ./reticulum_meshchatx-*-py3-none-any.whl
meshchatx --headless
T383838pipx is also supported:
T282828
pipx install ./reticulum_meshchatx-*-py3-none-any.whl
Run from Source (Web Server Mode)
Use this when developing or when you need a local custom build.
T282828
git clone https://git.quad4.io/RNS-Things/MeshChatX.git
Tffa657cd MeshChatX
corepack Tffa657enable
pnpm install
pip install poetry
poetry install
pnpm run build-frontend
poetry run python -m meshchatx.meshchat --headless --host T79c0ff127.0.0.1
Run sandboxed (Linux)
To run the native T383838meshchatx binary (alias: T383838meshchat) with extra filesystem isolation, you can use Firejail or Bubblewrap (T383838bwrap) while keeping normal network access for Reticulum and the web UI. Full examples (pip/pipx, Poetry, USB serial notes) are in:
The same page appears in the in-app Documentation list (MeshChatX docs) when served from the bundled or synced T383838meshchatx-docs files.
Build Desktop Packages from Source
These scripts are defined in T383838package.json and T383838Taskfile.yml.
Linux x64 AppImage + DEB
T282828
pnpm run dist:linux-x64
Linux arm64 AppImage + DEB
T282828
pnpm run dist:linux-arm64
RPM
T282828
pnpm run dist:rpm
Or through Task:
T282828
task dist:fe:rpm
Architecture Support Summary
• Docker image: T383838amd64, T383838arm64
• Linux AppImage: T383838x64, T383838arm64
• Linux DEB: T383838x64, T383838arm64
• Windows: T383838x64, T383838arm64 (build scripts available)
• macOS: build scripts available (T383838arm64, T383838universal) for local build environments
• Android: build workflow and Android project are present in this repository
Android
Configuration
MeshChatX supports both CLI args and env vars.
┌────────────────────────┬──────────────────────────────────────┬──────────────┬───────────────────┐
│ Argument │ Environment Variable │ Default │ Description │
├────────────────────────┼──────────────────────────────────────┼──────────────┼───────────────────┤
│ T383838--host │ T383838MESHCHAT_HOST │ T383838127.0.0.1 │ Web server bind … │
│ T383838--port │ T383838MESHCHAT_PORT │ T3838388000 │ Web server port │
│ T383838--no-https │ T383838MESHCHAT_NO_HTTPS │ T383838false │ Disable HTTPS │
│ T383838--ssl-cert / T383838--ssl-key │ T383838MESHCHAT_SSL_CERT / T383838MESHCHAT_SSL_KEY │ (none) │ PEM certificate … │
│ T383838--rns-log-level │ T383838MESHCHAT_RNS_LOG_LEVEL │ (none) │ Reticulum (RNS) … │
│ T383838--headless │ T383838MESHCHAT_HEADLESS │ T383838false │ Do not auto-laun… │
│ T383838--auth │ T383838MESHCHAT_AUTH │ T383838false │ Enable basic auth │
│ T383838--storage-dir │ T383838MESHCHAT_STORAGE_DIR │ T383838./storage │ Data directory │
│ T383838--public-dir │ T383838MESHCHAT_PUBLIC_DIR │ auto/bundled │ Frontend files d… │
└────────────────────────┴──────────────────────────────────────┴──────────────┴───────────────────┘
Branches
┌────────┬─────────────────────────────────────────────────────────────────┐
│ Branch │ Purpose │
├────────┼─────────────────────────────────────────────────────────────────┤
│ T383838master │ Stable releases. Production-ready code only. │
│ T383838dev │ Active development. May contain breaking or incomplete changes. │
└────────┴─────────────────────────────────────────────────────────────────┘
Development
Common tasks from T383838Taskfile.yml:
T282828
task install
task lint:all
task test:all
task build:all
T383838Makefile shortcuts are also available:
┌──────────────┬─────────────────────────────────────────┐
│ Command │ Description │
├──────────────┼─────────────────────────────────────────┤
│ T383838make install │ Install pnpm and poetry dependencies │
│ T383838make run │ Run MeshChatX via poetry │
│ T383838make build │ Build frontend │
│ T383838make lint │ Run eslint and ruff │
│ T383838make test │ Run frontend and backend tests │
│ T383838make clean │ Remove build artifacts and node_modules │
└──────────────┴─────────────────────────────────────────┘
Versioning
Current version in this repo is T3838384.4.0.
• T383838package.json is the JavaScript/Electron version source.
• T383838meshchatx/src/version.py is synced from T383838package.json using:
T282828
pnpm run version:sync
For release consistency, keep version fields aligned where required (T383838package.json, T383838pyproject.toml, T383838meshchatx/__init__.py).
Security
Security and integrity details:
• Built-in integrity checks and HTTPS/WSS defaults in app runtime
• CI scanning workflows in T383838.gitea/workflows/
Adding a Language
Locale discovery is automatic. To add a new language, create a single JSON file:
1. Generate a blank template from T383838en.json:
T282828
python scripts/generate_locale_template.py
This writes T383838locales.json with every key set to an empty string.
2. Rename it to your language code and move it into the locales directory:
T282828
mv locales.json meshchatx/src/frontend/locales/xx.json
3. Set T383838_languageName at the top of the file to the native name of the language (e.g. T383838"Espanol", T383838"Francais"). This is displayed in the language selector.
4. Translate all remaining values.
5. Run T383838pnpm test -- tests/frontend/i18n.test.js --run to verify key parity with T383838en.json.
No other code changes are required. The app, language selector, and tests all discover locales from the T383838meshchatx/src/frontend/locales/ directory at build time.
Credits
• Liam Cottle - Original Reticulum MeshChat
• RFnexus - micron parser JavaScript work
• markqvist - Reticulum, LXMF, LXST
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────